package org.dromara.common.core.function;

/**
 * 分支处理 函数式接口
 *
 * @author zlj
 * @since 2023/1/10
 */
@FunctionalInterface
public interface BranchHandleFunction {

	/**
	 * 分支处理函数
	 *
	 * @param trueBranch  条件成立分支逻辑
	 * @param falseBranch 条件不成立分支逻辑
	 */
	void branchHandle(Runnable trueBranch, Runnable falseBranch);

	/**
	 * 条件成立分支函数
	 *
	 * @param trueBranch 条件成立分支逻辑
	 */
	default BranchHandleFunction trueBranchHandle(Runnable trueBranch) {
		this.branchHandle(trueBranch, () -> {});
		return this;
	}

	/**
	 * 条件不成立分支函数
	 *
	 * @param falseBranch 条件不成立分支逻辑
	 */
	default BranchHandleFunction falseBranchHandle(Runnable falseBranch) {
		this.branchHandle(() -> {}, falseBranch);
		return this;
	}
}
